package com.itheima.controller;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.itheima.common.CommonResult;
import com.itheima.common.OssProperties;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@RestController
@RequestMapping("/common")
@Log4j2
public class CommonController {
    //内容移动到 OssProperties  bean 中
    // //@Value 通过@Value注解指定系统属性的名称susan.test.userName，该名称需要使用${}包起来。
    // // Endpoint以华东1（杭州）为例，其它Region请按实际情况填写。
    // @Value("${oss.endpoint}")
    // private String endpoint;
    // // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
    // @Value("${oss.accessKey}")
    // private String accessKeyId;
    // @Value("${oss.secret}")
    // private String accessKeySecret;
    // // 填写Bucket名称，例如examplebucket。
    // @Value("${oss.bucketName}")
    // private String bucketName;
    //
    // @Value("${oss.url}")
    // private String url;
   @Autowired
    private OssProperties ossProperties;
    @PostMapping("/upload")
    public CommonResult upload(MultipartFile file) {
        String f = file.getOriginalFilename();
        log.info("文件名：{}", f);
        // 调用阿里云oss上传文件

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(ossProperties.getEndpoint(), ossProperties.getAccessKey(), ossProperties.getSecret());

        try {
            String content = "Hello OSS";
            //file.getOriginalFilename() 上传的文件名  file.getInputStream()上传的文件
            ossClient.putObject(ossProperties.getBucketName(), file.getOriginalFilename(),file.getInputStream());
        } catch (Exception oe) {
            log.error("上传出现异常");
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
        String fileUrl= ossProperties.getUrl() + "/"+ file.getOriginalFilename();
        return CommonResult.success("上传成功",fileUrl);
    }


}
